1. Field of the Invention
This invention relates to computer timing circuits and more particular to a method and apparatus having the capability of generating pulses at more than one rate (i.e. stretching the pulse period of the computer clock system) or stalling the computer clock system (i.e. holding the clock system indefinitely in a high state).
2. Description of the Prior Art
For any computer manufacturing company to remain competitive it must provide features in its equipment reflecting user needs and requirements, and this equipment must be offered to the user at the lowest cost possible. Two primary demands compatible with the lowest cost have surfaced in the marketplace. One is to provide a greater "throughput capability"; while another is to provide broader capability for providing a broader spectrum of services to the user. These requirements translate into one broad general requirement --maximum data handling capabilities with minimum hardware requirements. Accordingly, the computer designer is faced with a problem of reducing the ultimate cost of the computer system and increasing capabilities of the computer system. These requirements act in opposition to each other. Generally, additional features and capabilities require increased hardware which translates to increased cost; whereas reducing costs translates into a reduced number of features and capabilities by reducing hardware.
One particular piece of hardware which is utilized in all computer systems and is additionally utilized in different portions of computer systems is the clock system of a computer system. Different portions of a computer system operate at different clock rates. For example, card readers and printers operate at one inherent rate; disk drives and tape drives operate at another rate; the main memory of a computer system operates at still another rate; whereas the central processing unit CPU operates at still another rate. As computer systems become more complex and have multiprogramming, multiprocessing and communication tasks, timing requirements also become further complex. Moreover, some computer systems operate in a synchronous slow manner; other computer systems operate in a synchronous fast manner; and still others operate in an asynchronous manner. It becomes obvious, therefore, that not only clocks with different clock rates may be required for any given computer system, but also clocks that can start and stop themselves upon command. For example, a computer system comprising a CPU and main memory requires that the CPU access main memory at a rate R.sub.1 which is the cycle time of the main memory. When a tape drive is added to the system, both the CPU and main memory may be required to communicate with the tape drive at a different rate R.sub.2 which is the rate of the tape drive. This would require a different clock rate. Moreover, if operation of the computer system is asynchronous (i.e. the performance of each operation starts as a result of a signal either when a previous operation has been completed, or when the parts of the computer system required for the next operation are available), the CPU clock may be required to stop itself until it receives the signal that the information is available for it. Of course, one way to handle this start-stop problem is to permit the clock to idle at its normal rate; however, when information is available at the middle of the idling cycle, it cannot be immediately received in the middle of the cycle, but must await for the beginning of the cycle. This is inefficient and causes loss of valuable computer time. Hence, it is better to stall the clock and permit immediate restart when information is available.
One obvious solution to the problem of different clock rates is to provide a different clock for each different requirement. However, as previously noted, this is incompatible with the requirements of the marketplace and competition. Another prior art solution is to provide means for slowing down or speeding up a clock system. However, since computer clock systems must also be extremely accurate and maintain their accuracy over long periods of time, this solution is not commercially practical except in some exceptional circumstances, because expensive precisely controlled oscillators are required which do not lose their accuracy when their speed is varied. This means that not only must the oscillator circuit be accurate but the control circuit must be very accurate; thus adding two expensive components instead of one.
What is required in the way of timing circuits, particularly for the cheaper, mini-computer systems which nonetheless are required to have many of the features of larger systems, is a computer clock system which can automatically provide a series of pulses which can be stretched upon request; moreover, the clock system should be capable of stalling itself to satisfy the needs of some asynchronous operations, and restarting immediately upon request.